using System;

namespace AuthorizeNET {
	public class Customer : INameValueSerializable {
		private string given, surname, company, address, city, state, zip, country, phone, fax, customer_id, customer_ip, customer_tax_id;

		public Customer(string given, string surname, string company, string address, string city, string state, string zip, string country, string phone, string fax, string customer_id, string customer_ip, string customer_tax_id) {
			this.given = given;
			this.surname = surname;
			this.company = company;
			this.address = address;
			this.city = city;
			this.state = state;
			this.zip = zip;
			this.country = country;
			this.phone = phone;
			this.fax = fax;
			this.customer_id = customer_id;
			this.customer_ip = customer_ip;
			this.customer_tax_id = customer_tax_id;
		}

		public Customer(string given, string surname, string company, string address, string city, string state, string zip, string country, string phone, string fax)
			: this(given, surname, company, address, city, state, zip, country, phone, fax, string.Empty, string.Empty, string.Empty) { }

		public Customer()
			: this(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty) { }

		[KeyName("x_first_name")]
		public string Given {
			get { return (this.given); }
			set { this.given = value; }
		}

		[KeyName("x_last_name")]
		public string Surname {
			get { return (this.surname); }
			set { this.surname = value; }
		}

		[KeyName("x_company")]
		public string Company {
			get { return (this.company); }
			set { this.company = value; }
		}

		[KeyName("x_address")]
		public string Address {
			get { return (this.address); }
			set { this.address = value; }
		}

		[KeyName("x_city")]
		public string City {
			get { return (this.city); }
			set { this.city = value; }
		}

		[KeyName("x_zip")]
		public string Postal {
			get { return (this.zip); }
			set { this.zip = value; }
		}

		[KeyName("x_country")]
		public string Country {
			get { return (this.country); }
			set { this.country = value; }
		}

		[KeyName("x_phone")]
		public string Phone {
			get { return (this.phone); }
			set { this.phone = value; }
		}

		[KeyName("x_fax")]
		public string Fax {
			get { return (this.fax); }
			set { this.fax = value; }
		}

		[KeyName("x_cust_id")]
		public string CustomerID {
			get { return (this.customer_id); }
			set { this.customer_id = value; }
		}

		[KeyName("x_customer_ip")]
		public string CustomerIP {
			get { return (this.customer_ip); }
			set { this.customer_ip = value; }
		}

		[KeyName("x_customer_tax_id")]
		public string CustomerTaxID {
			get { return (this.customer_tax_id); }
			set { this.customer_tax_id = value; }
		}
	}
}
